package br.academia.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;

import javax.faces.model.SelectItem;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.academia.arq.dao.AvaliacaoFisicaDAO;
import br.academia.arq.erros.DAOException;
import br.academia.arq.erros.NegocioException;
import br.academia.dominio.Aluno;
import br.academia.dominio.AvaliacaoFisica;
import br.academia.dominio.Funcionario;
import br.academia.negocio.AbstractProcessador;
import br.academia.negocio.AvaliacaoFisicaProcessador;
import br.academia.util.Formatador;
import br.academia.util.Validador;

@SuppressWarnings("serial")
@Component("avaliacaoFisica")
@Scope("session")
public class AvaliacaoFisicaController extends AbstractController{
	/** JSPs chamadas pelo Controller */
	public static final String CADASTRAR_JSP = "/admin/avaliacaoFisica/cadastrar_avaliacaoFisica.jsf";
	public static final String ALTERAR_JSP = "/admin/avaliacaoFisica/alterar_avaliacaoFisica.jsf";
	public static final String LISTAR_JSP = "/admin/avaliacaoFisica/listar_avaliacaoFisica.jsf";
	public static final String MENU_JSP = "/admin/avaliacaoFisica/menu_avaliacaoFisica.jsf";
	
	/** Objeto usado nos fluxos do Controller */
	private AvaliacaoFisica avaliacaoFisica;
	
	/** Atributos usados nas listagens do Controller */
	private Aluno aluno;
	private Funcionario funcionario;
	private String dataCadastro;
	private String objetivo;
	private String observacoes;
	private String pesoAtual;
	private String altura;
	private String densidadeCorporal;
	private String taxaGordura;
	private String pesoMagro;
	private String pesoGordo;
	private String pesoOsseo;
	private String pesoResidual;
	private String pesoMuscular;
	private String pesoIdeal;
	private String pesoDesejado;
	private String taxaGorduraDesejada;
	
	/* # Dobras Cutaneas # */
	private String subescapular;
	private String triceps;
	private String peitoral;
	private String axilarMedia;
	private String supraIliaca;
	private String supraEspinhal;
	private String abdominal;
	private String coxa;
	private String panturrilha;

	/* # COLUNA VERTEBRAL # */
	private Boolean hiperlordoseLombar;
	private Boolean hipercifoseLombar;
	private Boolean hiperlordoseCervical;
	private Boolean hipercifoseCervical;
	private Boolean retificacaoLombar;
	private Boolean retificacaoDorsal;
	private Boolean retificacaoCervical;
	private Boolean escoliose;
	
	/* # Cintura Escapular # */
	private Boolean rotacaoInterna;
	private Boolean rotacaoExterna;
	private Boolean protusaoOmbros;
	private Boolean depressaoOmbros;
	private Boolean retracaoOmbros;
	private Boolean assimetriaOmbros;

	/* # Cintura Pélvica # */
	private Boolean anteversao;
	private Boolean antepulsao;
	private Boolean retroversao;
	private Boolean retropulsao;
	private Boolean assimetriaQuadril;

	/* # Joelhos # */
	private Boolean genoFlexo;
	private Boolean genoRecurvato;
	private Boolean genoVaro;
	private Boolean genoValgo;
	private Boolean pesAbduzidos;
	private Boolean pesAduzidos;
	private Boolean pesCavos;
	private Boolean pesPlanos;
	
	/** Lista populada pelos fluxos */
	private Collection<AvaliacaoFisica> listaAvaliacaoFisicas;
	
	/** Combo de AvaliacaoFisicas */
	private Collection<SelectItem> comboAvaliacaoFisicas;
	
	public Collection<SelectItem> getComboAvaliacaoFisicas(){
		if(Validador.isEmpty(comboAvaliacaoFisicas)){
			AvaliacaoFisicaDAO dao = null;
			try {
				dao = getDAO(AvaliacaoFisicaDAO.class);
				
				comboAvaliacaoFisicas = toSelectItems(dao.findAll(AvaliacaoFisica.class), "id", "nome");
			} catch (DAOException e) {
				addMensagem("Ocorreu um erro na geração da lista de AvaliacaoFisicas. Por favor, contate a administração do sistema.");
				postarMensagens();
				e.printStackTrace();
			}finally{
				close(dao);
			}
		}
		
		return comboAvaliacaoFisicas;
	}

	/**
	 * Construtor público
	 */
	public AvaliacaoFisicaController(){
		reset();
	}
	
	/**
	 * Método usado para reiniciar os atributos do Controller
	 */
	public void reset(){
		avaliacaoFisica = new AvaliacaoFisica();
		listaAvaliacaoFisicas = new ArrayList<AvaliacaoFisica>();
		
		aluno = new Aluno();
		funcionario = new Funcionario();
		dataCadastro = "";
		objetivo = "";
		observacoes = "";
		pesoAtual = "";
		altura = "";
		densidadeCorporal = "";
		taxaGordura = "";
		pesoMagro = "";
		pesoGordo = "";
		pesoOsseo = "";
		pesoResidual = "";
		pesoMuscular = "";
		pesoIdeal = "";
		pesoDesejado = "";
		taxaGorduraDesejada = "";
		
		/* # Dobras Cutaneas # */
		subescapular = "";
		triceps = "";
		peitoral = "";
		axilarMedia = "";
		supraIliaca = "";
		supraEspinhal = "";
		abdominal = "";
		coxa = "";
		panturrilha = "";

		/* # COLUNA VERTEBRAL # */
		hiperlordoseLombar = false;
		hipercifoseLombar = false;
		hiperlordoseCervical = false;
		hipercifoseCervical = false;
		retificacaoLombar = false;
		retificacaoDorsal = false;
		retificacaoCervical = false;
		escoliose = false;
		
		/* # Cintura Escapular # */
		rotacaoInterna = false;
		rotacaoExterna = false;
		protusaoOmbros = false;
		depressaoOmbros = false;
		retracaoOmbros = false;
		assimetriaOmbros = false;

		/* # Cintura Pélvica # */
		anteversao = false;
		antepulsao = false;
		retroversao = false;
		retropulsao = false;
		assimetriaQuadril = false;

		/* # Joelhos # */
		genoFlexo = false;
		genoRecurvato = false;
		genoVaro = false;
		genoValgo = false;
		pesAbduzidos = false;
		pesAduzidos = false;
		pesCavos = false;
		pesPlanos = false;
	}
	
	/**
	 * Método utilizado para entrar no menu de AvaliacaoFisica
	 * @return
	 */
	public String entrarMenu(){
		reset();
		
		return forward(MENU_JSP);
	}
	
	/**
	 * Método utilizado para entrar na listagem de AvaliacaoFisica
	 * @return
	 */
	public String entrarListagem(){
		reset();
		
		return listar();
	}
	
	/**
	 * Método que popula a lista de AvaliacaoFisicas e redireciona para a listagem
	 * @return
	 */
	public String listar(){
		AvaliacaoFisicaDAO dao = null;
		
		try {
			dao = getDAO(AvaliacaoFisicaDAO.class);
			
			if(Validador.isEmpty(aluno) && Validador.isEmpty(funcionario) && Validador.isEmpty(dataCadastro)){
				listaAvaliacaoFisicas = dao.findAll(AvaliacaoFisica.class);
			}else{
				setValores();
				
				listaAvaliacaoFisicas = dao.findAvaliacaoFisicaLike(avaliacaoFisica);
			}
		} catch (DAOException e) {
			addMensagem("Ocorreu um erro na listagem de AvaliacaoFisicas. Por favor, contate a administração do sistema.");
			e.printStackTrace();
			return reload();
		}finally{
			if(dao != null){
				dao.close();
			}
		}
		
		if(hasMensagens()){
			return reload();
		}
		
		if(listaAvaliacaoFisicas.isEmpty()){
			addMensagem("Não foi encontrada nenhum Exercício para a busca realizada.");
		}
		
		return forward(LISTAR_JSP);
	}
	
	/**
	 * Método utilizado para entrar na página de alteração de AvaliacaoFisicas
	 * @return
	 */
	public String entrarAlteracao(){
		reset();
		AvaliacaoFisicaDAO dao = null;
		
		Integer id = Integer.valueOf(getParameter("id"));
		
		if(id == null || id <= 0){
			addMensagem("Ocorreu um erro na alteração do AvaliacaoFisicas selecionado. Por favor, contate a administração do sistema.");
			return reload();
		}
		
		try {
			dao = getDAO(AvaliacaoFisicaDAO.class);
			
			avaliacaoFisica = dao.findByPrimaryKey(id, AvaliacaoFisica.class);
			
			getValores();
		} catch (DAOException e) {
			e.printStackTrace();
		}finally{
			close(dao);
		}
		return forward(ALTERAR_JSP);
	}
	
	/**
	 * Método que realiza a chamada à classe de negócio que realiza
	 * a atualização do AvaliacaoFisica na base de dados.
	 * @return
	 */
	public String alterar(){
		validarPreenchimento();
		
		if(hasMensagens()){
			return reload();
		}
		
		setValores();
		
		AvaliacaoFisicaProcessador processador = new AvaliacaoFisicaProcessador();
		
		try {
			processador.execute(AbstractProcessador.ALTERAR, avaliacaoFisica);
		} catch (NegocioException e) {
			addMensagem(e.getMessage());
			return reload();
		}
		
		return entrarListagem();
	}
	
	/**
	 * Método utilizado para entrar na página de cadastro de Ideais
	 * @return
	 */
	public String entrarCadastro(){
		reset();
		
		return forward(CADASTRAR_JSP);
	}
	
	/**
	 * Método que realiza a chamada à classe de negócio que realiza
	 * a inserção do AvaliacaoFisica na base de dados.
	 * @return
	 */
	public String cadastrar(){
		validarPreenchimento();
		
		if(hasMensagens()){
			return reload();
		}
		
		setValores();
		
		AvaliacaoFisicaProcessador processador = new AvaliacaoFisicaProcessador();
		
		try {
			processador.execute(AbstractProcessador.CADASTRAR, avaliacaoFisica);
		} catch (NegocioException e) {
			addMensagem(e.getMessage());
		}
		
		return entrarListagem();
	}
	
	/**
	 * Método utilizado na página de listagem de AvaliacaoFisicas, para remover
	 * um AvaliacaoFisica selecionado.
	 * @return
	 */
	public String remover(){
		Integer id = Integer.valueOf(getParameter("id"));
		
		if(id == null || id <= 0){
			addMensagem("Ocorreu um erro na remoção do item selecionado. Por favor, contate a administração do sistema.");
			return reload();
		}
		
		avaliacaoFisica.setId(id);
		
		AvaliacaoFisicaProcessador processador = new AvaliacaoFisicaProcessador();
		
		try {
			processador.execute(AbstractProcessador.REMOVER, avaliacaoFisica);
		} catch (NegocioException e) {
			addMensagem(e.getMessage());
		}
		
		return entrarListagem();
	}
	
	/**
	 * Método utilizado para cancelar a operação em curso
	 * @return
	 */
	public String cancelar(){
		return entrarMenu();
	}
	
	public Float formatarValor(String valor){
		Float retorno = null;
		
		if(!Validador.isEmpty(valor)){
			if(valor.contains(",")){
				retorno = (Float.parseFloat(valor.replaceAll("\\.", "").replaceAll(",", ".")));
			}else{
				retorno = (Float.parseFloat(valor));
			}
		}
		
		return retorno;
	}
	
	public AvaliacaoFisica getAvaliacaoFisica() {
		return avaliacaoFisica;
	}

	public void setAvaliacaoFisica(AvaliacaoFisica avaliacaoFisica) {
		this.avaliacaoFisica = avaliacaoFisica;
	}
	
	private void validarPreenchimento(){
		addMensagem(Validador.validaPreenchimento("Aluno", aluno));
		addMensagem(Validador.validaPreenchimento("Funcionário", funcionario));
		addMensagem(Validador.validaPreenchimento("Data de Cadastro", dataCadastro));
		addMensagem(Validador.validaPreenchimento("Objetivo", objetivo));
		addMensagem(Validador.validaPreenchimento("Observações", observacoes));
		addMensagem(Validador.validaPreenchimento("Peso Atual", pesoAtual));
		addMensagem(Validador.validaPreenchimento("Altura", altura));
		addMensagem(Validador.validaPreenchimento("Densidade Corporal", densidadeCorporal));
		addMensagem(Validador.validaPreenchimento("Taxa de Gordura", taxaGordura));
		addMensagem(Validador.validaPreenchimento("Peso Magro", pesoMagro));
		addMensagem(Validador.validaPreenchimento("Peso Gordo", pesoGordo));
		addMensagem(Validador.validaPreenchimento("Peso Ósseo", pesoOsseo));
		addMensagem(Validador.validaPreenchimento("Peso Residual", pesoResidual));
		addMensagem(Validador.validaPreenchimento("Peso Muscular", pesoMuscular));
		addMensagem(Validador.validaPreenchimento("Peso Ideal", pesoIdeal));
		addMensagem(Validador.validaPreenchimento("Peso Desejado", pesoDesejado));
		addMensagem(Validador.validaPreenchimento("Taxa de Gordura Desejada", taxaGorduraDesejada));
	
		/* # Dobras Cutaneas # */
		addMensagem(Validador.validaPreenchimento("Subescapular", subescapular));
		addMensagem(Validador.validaPreenchimento("Tríceps", triceps));
		addMensagem(Validador.validaPreenchimento("Peitoral", peitoral));
		addMensagem(Validador.validaPreenchimento("Axilar Média", axilarMedia));
		addMensagem(Validador.validaPreenchimento("Supra-Ilíaca", supraIliaca));
		addMensagem(Validador.validaPreenchimento("Supra-Espinhal", supraEspinhal));
		addMensagem(Validador.validaPreenchimento("Abdominal", abdominal));
		addMensagem(Validador.validaPreenchimento("Coxa", coxa));
		addMensagem(Validador.validaPreenchimento("Panturrilha", panturrilha));
	
		/* # COLUNA VERTEBRAL # */
		addMensagem(Validador.validaPreenchimento("Aluno", hiperlordoseLombar));
		addMensagem(Validador.validaPreenchimento("Aluno", hipercifoseLombar));
		addMensagem(Validador.validaPreenchimento("Aluno", hiperlordoseCervical));
		addMensagem(Validador.validaPreenchimento("Aluno", hipercifoseCervical));
		addMensagem(Validador.validaPreenchimento("Aluno", retificacaoLombar));
		addMensagem(Validador.validaPreenchimento("Aluno", retificacaoDorsal));
		addMensagem(Validador.validaPreenchimento("Aluno", retificacaoCervical));
		addMensagem(Validador.validaPreenchimento("Aluno", escoliose));
		
		/* # Cintura Escapular # */
		addMensagem(Validador.validaPreenchimento("Aluno", rotacaoInterna));
		addMensagem(Validador.validaPreenchimento("Aluno", rotacaoExterna));
		addMensagem(Validador.validaPreenchimento("Aluno", protusaoOmbros));
		addMensagem(Validador.validaPreenchimento("Aluno", depressaoOmbros));
		addMensagem(Validador.validaPreenchimento("Aluno", retracaoOmbros));
		addMensagem(Validador.validaPreenchimento("Aluno", assimetriaOmbros));
	
		/* # Cintura Pélvica # */
		addMensagem(Validador.validaPreenchimento("Aluno", anteversao));
		addMensagem(Validador.validaPreenchimento("Aluno", antepulsao));
		addMensagem(Validador.validaPreenchimento("Aluno", retroversao));
		addMensagem(Validador.validaPreenchimento("Aluno", retropulsao));
		addMensagem(Validador.validaPreenchimento("Aluno", assimetriaQuadril));
	
		/* # Joelhos # */
		addMensagem(Validador.validaPreenchimento("Aluno", genoFlexo));
		addMensagem(Validador.validaPreenchimento("Aluno", genoRecurvato));
		addMensagem(Validador.validaPreenchimento("Aluno", genoVaro));
		addMensagem(Validador.validaPreenchimento("Aluno", genoValgo));
		addMensagem(Validador.validaPreenchimento("Aluno", pesAbduzidos));
		addMensagem(Validador.validaPreenchimento("Aluno", pesAduzidos));
		addMensagem(Validador.validaPreenchimento("Aluno", pesCavos));
		addMensagem(Validador.validaPreenchimento("Aluno", pesPlanos));
	}

	private void setValores(){
		avaliacaoFisica.setAluno(aluno);
		avaliacaoFisica.setFuncionario(funcionario);
		avaliacaoFisica.setDataCadastro(Formatador.getInstance().parseDate(dataCadastro));
		avaliacaoFisica.setObjetivo(objetivo);
		avaliacaoFisica.setObservacoes(observacoes);
		avaliacaoFisica.setPesoAtual(formatarValor(pesoAtual));
		avaliacaoFisica.setAltura(formatarValor(altura));
		avaliacaoFisica.setDensidadeCorporal(formatarValor(densidadeCorporal));
		avaliacaoFisica.setTaxaGordura(formatarValor(taxaGordura));
		avaliacaoFisica.setPesoMagro(formatarValor(pesoMagro));
		avaliacaoFisica.setPesoGordo(formatarValor(pesoGordo));
		avaliacaoFisica.setPesoOsseo(formatarValor(pesoOsseo));
		avaliacaoFisica.setPesoResidual(formatarValor(pesoResidual));
		avaliacaoFisica.setPesoMuscular(formatarValor(pesoMuscular));
		avaliacaoFisica.setPesoIdeal(formatarValor(pesoIdeal));
		avaliacaoFisica.setPesoDesejado(formatarValor(pesoDesejado));
		avaliacaoFisica.setTaxaGorduraDesejada(formatarValor(taxaGorduraDesejada));

		/* # Dobras Cutaneas # */
		avaliacaoFisica.setSubescapular(formatarValor(subescapular));
		avaliacaoFisica.setTriceps(formatarValor(triceps));
		avaliacaoFisica.setPeitoral(formatarValor(peitoral));
		avaliacaoFisica.setAxilarMedia(formatarValor(axilarMedia));
		avaliacaoFisica.setSupraIliaca(formatarValor(supraIliaca));
		avaliacaoFisica.setSupraEspinhal(formatarValor(supraEspinhal));
		avaliacaoFisica.setAbdominal(formatarValor(abdominal));
		avaliacaoFisica.setCoxa(formatarValor(coxa));
		avaliacaoFisica.setPanturrilha(formatarValor(panturrilha));
	
		/* # COLUNA VERTEBRAL # */
		avaliacaoFisica.setHiperlordoseLombar(hiperlordoseLombar);
		avaliacaoFisica.setHipercifoseLombar(hipercifoseLombar);
		avaliacaoFisica.setHiperlordoseCervical(hiperlordoseCervical);
		avaliacaoFisica.setHipercifoseCervical(hipercifoseCervical);
		avaliacaoFisica.setRetificacaoLombar(retificacaoLombar);
		avaliacaoFisica.setRetificacaoDorsal(retificacaoDorsal);
		avaliacaoFisica.setRetificacaoCervical(retificacaoCervical);
		avaliacaoFisica.setEscoliose(escoliose);
		
		/* # Cintura Escapular # */
		avaliacaoFisica.setRotacaoInterna(rotacaoInterna);
		avaliacaoFisica.setRotacaoExterna(rotacaoExterna);
		avaliacaoFisica.setProtusaoOmbros(protusaoOmbros);
		avaliacaoFisica.setDepressaoOmbros(depressaoOmbros);
		avaliacaoFisica.setRetracaoOmbros(retracaoOmbros);
		avaliacaoFisica.setAssimetriaOmbros(assimetriaOmbros);
	
		/* # Cintura Pélvica # */
		avaliacaoFisica.setAnteversao(anteversao);
		avaliacaoFisica.setAntepulsao(antepulsao);
		avaliacaoFisica.setRetroversao(retroversao);
		avaliacaoFisica.setRetropulsao(retropulsao);
		avaliacaoFisica.setAssimetriaQuadril(assimetriaQuadril);
	
		/* # Joelhos # */
		avaliacaoFisica.setGenoFlexo(genoFlexo);
		avaliacaoFisica.setGenoRecurvato(genoRecurvato);
		avaliacaoFisica.setGenoVaro(genoVaro);
		avaliacaoFisica.setGenoValgo(genoValgo);
		avaliacaoFisica.setPesAbduzidos(pesAbduzidos);
		avaliacaoFisica.setPesAduzidos(pesAduzidos);
		avaliacaoFisica.setPesCavos(pesCavos);
		avaliacaoFisica.setPesPlanos(pesPlanos);
	}
	
	private void getValores(){
		aluno = avaliacaoFisica.getAluno();
		funcionario = avaliacaoFisica.getFuncionario();
		dataCadastro = avaliacaoFisica.getDataCadastroFormatada();
		objetivo = avaliacaoFisica.getObjetivo();
		observacoes = avaliacaoFisica.getObservacoes();
		pesoAtual = avaliacaoFisica.getPesoAtual().toString();
		altura = avaliacaoFisica.getAltura().toString();
		densidadeCorporal = avaliacaoFisica.getDensidadeCorporal().toString();
		taxaGordura = avaliacaoFisica.getTaxaGordura().toString();
		pesoMagro = avaliacaoFisica.getPesoMagro().toString();
		pesoGordo = avaliacaoFisica.getPesoGordo().toString();
		pesoOsseo = avaliacaoFisica.getPesoOsseo().toString();
		pesoResidual = avaliacaoFisica.getPesoResidual().toString();
		pesoMuscular = avaliacaoFisica.getPesoMuscular().toString();
		pesoIdeal = avaliacaoFisica.getPesoIdeal().toString();
		pesoDesejado = avaliacaoFisica.getPesoDesejado().toString();
		taxaGorduraDesejada = avaliacaoFisica.getTaxaGorduraDesejada().toString();
		
		/* # Dobras Cutaneas # */
		subescapular = avaliacaoFisica.getSubescapular().toString();
		triceps = avaliacaoFisica.getTriceps().toString();
		peitoral = avaliacaoFisica.getPeitoral().toString();
		axilarMedia = avaliacaoFisica.getAxilarMedia().toString();
		supraIliaca = avaliacaoFisica.getSupraIliaca().toString();
		supraEspinhal = avaliacaoFisica.getSupraEspinhal().toString();
		abdominal = avaliacaoFisica.getAbdominal().toString();
		coxa = avaliacaoFisica.getCoxa().toString();
		panturrilha = avaliacaoFisica.getPanturrilha().toString();
	
		/* # COLUNA VERTEBRAL # */
		hiperlordoseLombar = avaliacaoFisica.getHiperlordoseLombar();
		hipercifoseLombar = avaliacaoFisica.getHipercifoseLombar();
		hiperlordoseCervical = avaliacaoFisica.getHiperlordoseCervical();
		hipercifoseCervical = avaliacaoFisica.getHipercifoseCervical();
		retificacaoLombar = avaliacaoFisica.getRetificacaoLombar();
		retificacaoDorsal = avaliacaoFisica.getRetificacaoDorsal();
		retificacaoCervical = avaliacaoFisica.getRetificacaoCervical();
		escoliose = avaliacaoFisica.getEscoliose();
		
		/* # Cintura Escapular # */
		rotacaoInterna = avaliacaoFisica.getRotacaoInterna();
		rotacaoExterna = avaliacaoFisica.getRotacaoExterna();
		protusaoOmbros = avaliacaoFisica.getProtusaoOmbros();
		depressaoOmbros = avaliacaoFisica.getDepressaoOmbros();
		retracaoOmbros = avaliacaoFisica.getRetracaoOmbros();
		assimetriaOmbros = avaliacaoFisica.getAssimetriaOmbros();
	
		/* # Cintura Pélvica # */
		anteversao = avaliacaoFisica.getAntepulsao();
		antepulsao = avaliacaoFisica.getAntepulsao();
		retroversao = avaliacaoFisica.getRetroversao();
		retropulsao = avaliacaoFisica.getRetropulsao();
		assimetriaQuadril = avaliacaoFisica.getAssimetriaQuadril();
	
		/* # Joelhos # */
		genoFlexo = avaliacaoFisica.getGenoFlexo();
		genoRecurvato = avaliacaoFisica.getGenoRecurvato();
		genoVaro = avaliacaoFisica.getGenoVaro();
		genoValgo = avaliacaoFisica.getGenoValgo();
		pesAbduzidos = avaliacaoFisica.getPesAbduzidos();
		pesAduzidos = avaliacaoFisica.getPesAduzidos();
		pesCavos = avaliacaoFisica.getPesCavos();
		pesPlanos = avaliacaoFisica.getPesPlanos();
	}

	public Collection<AvaliacaoFisica> getListaAvaliacaoFisicas() {
		return listaAvaliacaoFisicas;
	}

	public void setListaAvaliacaoFisicas(Collection<AvaliacaoFisica> listaAvaliacaoFisicas) {
		this.listaAvaliacaoFisicas = listaAvaliacaoFisicas;
	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public String getDataCadastro() {
		return dataCadastro;
	}
	
	public String getDataCadastroFormatada() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		
		if(Validador.isEmpty(dataCadastro)){
			return "";
		}
		
		return sdf.format(dataCadastro);
	}

	public void setDataCadastro(String dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public String getObjetivo() {
		return objetivo;
	}

	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	public String getObservacoes() {
		return observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	public Boolean getHiperlordoseLombar() {
		return hiperlordoseLombar;
	}

	public void setHiperlordoseLombar(Boolean hiperlordoseLombar) {
		this.hiperlordoseLombar = hiperlordoseLombar;
	}

	public Boolean getHipercifoseLombar() {
		return hipercifoseLombar;
	}

	public void setHipercifoseLombar(Boolean hipercifoseLombar) {
		this.hipercifoseLombar = hipercifoseLombar;
	}

	public Boolean getHiperlordoseCervical() {
		return hiperlordoseCervical;
	}

	public void setHiperlordoseCervical(Boolean hiperlordoseCervical) {
		this.hiperlordoseCervical = hiperlordoseCervical;
	}

	public Boolean getHipercifoseCervical() {
		return hipercifoseCervical;
	}

	public void setHipercifoseCervical(Boolean hipercifoseCervical) {
		this.hipercifoseCervical = hipercifoseCervical;
	}

	public Boolean getRetificacaoLombar() {
		return retificacaoLombar;
	}

	public void setRetificacaoLombar(Boolean retificacaoLombar) {
		this.retificacaoLombar = retificacaoLombar;
	}

	public Boolean getRetificacaoDorsal() {
		return retificacaoDorsal;
	}

	public void setRetificacaoDorsal(Boolean retificacaoDorsal) {
		this.retificacaoDorsal = retificacaoDorsal;
	}

	public Boolean getRetificacaoCervical() {
		return retificacaoCervical;
	}

	public void setRetificacaoCervical(Boolean retificacaoCervical) {
		this.retificacaoCervical = retificacaoCervical;
	}

	public Boolean getEscoliose() {
		return escoliose;
	}

	public void setEscoliose(Boolean escoliose) {
		this.escoliose = escoliose;
	}

	public Boolean getRotacaoInterna() {
		return rotacaoInterna;
	}

	public void setRotacaoInterna(Boolean rotacaoInterna) {
		this.rotacaoInterna = rotacaoInterna;
	}

	public Boolean getRotacaoExterna() {
		return rotacaoExterna;
	}

	public void setRotacaoExterna(Boolean rotacaoExterna) {
		this.rotacaoExterna = rotacaoExterna;
	}

	public Boolean getProtusaoOmbros() {
		return protusaoOmbros;
	}

	public void setProtusaoOmbros(Boolean protusaoOmbros) {
		this.protusaoOmbros = protusaoOmbros;
	}

	public Boolean getDepressaoOmbros() {
		return depressaoOmbros;
	}

	public void setDepressaoOmbros(Boolean depressaoOmbros) {
		this.depressaoOmbros = depressaoOmbros;
	}

	public Boolean getRetracaoOmbros() {
		return retracaoOmbros;
	}

	public void setRetracaoOmbros(Boolean retracaoOmbros) {
		this.retracaoOmbros = retracaoOmbros;
	}

	public Boolean getAssimetriaOmbros() {
		return assimetriaOmbros;
	}

	public void setAssimetriaOmbros(Boolean assimetriaOmbros) {
		this.assimetriaOmbros = assimetriaOmbros;
	}

	public Boolean getAnteversao() {
		return anteversao;
	}

	public void setAnteversao(Boolean anteversao) {
		this.anteversao = anteversao;
	}

	public Boolean getAntepulsao() {
		return antepulsao;
	}

	public void setAntepulsao(Boolean antepulsao) {
		this.antepulsao = antepulsao;
	}

	public Boolean getRetroversao() {
		return retroversao;
	}

	public void setRetroversao(Boolean retroversao) {
		this.retroversao = retroversao;
	}

	public Boolean getRetropulsao() {
		return retropulsao;
	}

	public void setRetropulsao(Boolean retropulsao) {
		this.retropulsao = retropulsao;
	}

	public Boolean getAssimetriaQuadril() {
		return assimetriaQuadril;
	}

	public void setAssimetriaQuadril(Boolean assimetriaQuadril) {
		this.assimetriaQuadril = assimetriaQuadril;
	}

	public Boolean getGenoFlexo() {
		return genoFlexo;
	}

	public void setGenoFlexo(Boolean genoFlexo) {
		this.genoFlexo= genoFlexo;
	}

	public Boolean getGenoRecurvato() {
		return genoRecurvato;
	}

	public void setGenoRecurvato(Boolean genoRecurvato) {
		this.genoRecurvato = genoRecurvato;
	}

	public Boolean getGenoVaro() {
		return genoVaro;
	}

	public void setGenoVaro(Boolean genoVaro) {
		this.genoVaro = genoVaro;
	}

	public Boolean getGenoValgo() {
		return genoValgo;
	}

	public void setGenoValgo(Boolean genoValgo) {
		this.genoValgo = genoValgo;
	}

	public Boolean getPesAbduzidos() {
		return pesAbduzidos;
	}

	public void setPesAbduzidos(Boolean pesAbduzidos) {
		this.pesAbduzidos = pesAbduzidos;
	}

	public Boolean getPesAduzidos() {
		return pesAduzidos;
	}

	public void setPesAduzidos(Boolean pesAduzidos) {
		this.pesAduzidos = pesAduzidos;
	}

	public Boolean getPesCavos() {
		return pesCavos;
	}

	public void setPesCavos(Boolean pesCavos) {
		this.pesCavos = pesCavos;
	}

	public Boolean getPesPlanos() {
		return pesPlanos;
	}

	public void setPesPlanos(Boolean pesPlanos) {
		this.pesPlanos = pesPlanos;
	}

	public void setComboAvaliacaoFisicas(
			Collection<SelectItem> comboAvaliacaoFisicas) {
		this.comboAvaliacaoFisicas = comboAvaliacaoFisicas;
	}

	public String getPesoAtual() {
		return pesoAtual;
	}

	public void setPesoAtual(String pesoAtual) {
		this.pesoAtual = pesoAtual;
	}

	public String getAltura() {
		return altura;
	}

	public void setAltura(String altura) {
		this.altura = altura;
	}

	public String getDensidadeCorporal() {
		return densidadeCorporal;
	}

	public void setDensidadeCorporal(String densidadeCorporal) {
		this.densidadeCorporal = densidadeCorporal;
	}

	public String getTaxaGordura() {
		return taxaGordura;
	}

	public void setTaxaGordura(String taxaGordura) {
		this.taxaGordura = taxaGordura;
	}

	public String getPesoMagro() {
		return pesoMagro;
	}

	public void setPesoMagro(String pesoMagro) {
		this.pesoMagro = pesoMagro;
	}

	public String getPesoGordo() {
		return pesoGordo;
	}

	public void setPesoGordo(String pesoGordo) {
		this.pesoGordo = pesoGordo;
	}

	public String getPesoOsseo() {
		return pesoOsseo;
	}

	public void setPesoOsseo(String pesoOsseo) {
		this.pesoOsseo = pesoOsseo;
	}

	public String getPesoResidual() {
		return pesoResidual;
	}

	public void setPesoResidual(String pesoResidual) {
		this.pesoResidual = pesoResidual;
	}

	public String getPesoMuscular() {
		return pesoMuscular;
	}

	public void setPesoMuscular(String pesoMuscular) {
		this.pesoMuscular = pesoMuscular;
	}

	public String getPesoIdeal() {
		return pesoIdeal;
	}

	public void setPesoIdeal(String pesoIdeal) {
		this.pesoIdeal = pesoIdeal;
	}

	public String getPesoDesejado() {
		return pesoDesejado;
	}

	public void setPesoDesejado(String pesoDesejado) {
		this.pesoDesejado = pesoDesejado;
	}

	public String getTaxaGorduraDesejada() {
		return taxaGorduraDesejada;
	}

	public void setTaxaGorduraDesejada(String taxaGorduraDesejada) {
		this.taxaGorduraDesejada = taxaGorduraDesejada;
	}

	public String getSubescapular() {
		return subescapular;
	}

	public void setSubescapular(String subescapular) {
		this.subescapular = subescapular;
	}

	public String getTriceps() {
		return triceps;
	}

	public void setTriceps(String triceps) {
		this.triceps = triceps;
	}

	public String getPeitoral() {
		return peitoral;
	}

	public void setPeitoral(String peitoral) {
		this.peitoral = peitoral;
	}

	public String getAxilarMedia() {
		return axilarMedia;
	}

	public void setAxilarMedia(String axilarMedia) {
		this.axilarMedia = axilarMedia;
	}

	public String getSupraIliaca() {
		return supraIliaca;
	}

	public void setSupraIliaca(String supraIliaca) {
		this.supraIliaca = supraIliaca;
	}

	public String getSupraEspinhal() {
		return supraEspinhal;
	}

	public void setSupraEspinhal(String supraEspinhal) {
		this.supraEspinhal = supraEspinhal;
	}

	public String getAbdominal() {
		return abdominal;
	}

	public void setAbdominal(String abdominal) {
		this.abdominal = abdominal;
	}

	public String getCoxa() {
		return coxa;
	}

	public void setCoxa(String coxa) {
		this.coxa = coxa;
	}

	public String getPanturrilha() {
		return panturrilha;
	}

	public void setPanturrilha(String panturrilha) {
		this.panturrilha = panturrilha;
	}
}
